---
title: 数据库新技术
---
## 数据故障与备份
### 安全措施

| 措施      | 说明                                               |
|---------|--------------------------------------------------|
| 用户标识与鉴定 | 最外层的安全保护措施，可以使用用户账户、口令及随机数校验等方式                  |
| 存储控制    | 对用户进行授权，包括操作类型（如查找、插入、删除、修改等动作）和数据对象（主要是数据范围）的权限 |
| 密码存储和传输 | 对远程终端用密码传输                                       |
| 视图的保护   | 对视图进行授权                                          |
| 审计      | 使用一个专用文件或数据库，自动将用户对数据库的所有操作记录下来                  |
### 数据故障

| 故障关系        | 故障原因        | 解决方法                                     |
|-------------|-------------|------------------------------------------|
| 事务本身的可预期故障  | 本身逻辑        | 在程序中预先设置 Rollback 语句                     |
| 事务本身的不可预期故障 | 算数溢出、违反存储保护 | 由 DBMS 的恢复子系统通过日志，撤销事务对数据库的修改，回退到事务的初始状态 |
| 系统故障        | 系统停止运转      | 通常使用检查点法                                 |
| 介质故障        | 外存被破坏       | 一般使用日志重做业务                               |

## 数据备份
冷备份，指在转储期间不允许对数据库进行任何存取、修改操作。优点是非常快速的备份方法、容易归档（直接物理复制操作）；缺点是只能提供到某一时间点上的恢复，不能做其它工作，不能按表或按用户恢复。

热备份，在转储期间允许对数据库进行存取、修改操作。因此，转储和用户事务并发执行；优点是可在表空间或数据库文件级备份，数据库仍可使用，可达到秒级恢复；缺点是不能出错，否则后果严重，若热备份不成功，所得结果几乎无效。

完全备份：备份所有数据

差量备份：仅备份上一次完全备份之后变化的数据。

日志文件：在事务处理过程中，DBMS 把事务开始、事务结束以及对数据库的插入、删除和修改的每一次操作写入日志文件。一旦发生故障，DBMS 的恢复子系统利用日志文件撤销事务对数据库的改变，回退到事务的初始状态。

备份毕竟是有时间节点的，不是实时的，例如：上一次备份到这次备份之间的数据库出现了故障，则这期间的数据无法恢复，因此，引入日志文件，可以实时记录针对数据库的任何操作，保证数据库可以实时恢复。

## 分布式数据库
局部数据库位于不同的物理位置，使用一个全局 DBMS 将所有局部数据库联网处理，这就是分布式数据库。其体系结构如下：

<img src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/img/202410241743110.png"/>

### 分片模式
* 水平分片：将表中的记录分别存放在不同的地方。
* 垂直分片：将表中的垂直的列值存放在不同的地方。
### 分布透明性

* 分片透明性： 用户或应用程序不需要知道逻辑上访问的表是如何分块存储的。
* 位置透明性：应用程序不关系数据存储位置的改变。
* 逻辑透明性：用户或应用程序无需知道局部使用的是那种数据模型。
* 复制透明性： 用户或应用程序不关心复制的数据是从何而来的。

## 数据仓库与数据挖掘
数据仓库是一种特殊的数据库，也是按数据库形式存储数据的，但是目的不同；数据库经过长时间的运行，里面的数据会保存的越来越多，就会影响系统运行效率，对于某些程序而言，很久之前的数据并非是必要的，因此，可以删除掉以减少数据，增加效率，考虑到删除这些数据比较可惜，因此，一般都将这些数据提取出来保存到另一个数据库中，称为数据仓库。

### 数据仓库四大特点
面向主题：按照一定的
## SQL 语言
SQL 语言中的语法关键字，不区分大小写
* 创建表 CREATE
* 指定主键 primary key();
* 指定外键 foreign key();
* 修改表 alter table;
* 删除表 drop table;
* 索引 index,视图 view;
* 字符串匹配 like, % 匹配多个字符串，_ 匹配一个字符串;
* 数据库插入 insert into ... values();
* 数据库删除 delete from ...where;
* 授权 grant ... on  ... to ,允许其将权限再赋给另一个用户;
* 收回权限 revoke ... on ... from ;
* with check option 表示要检查 where 后的谓词条件;
* UNION 出现在两个 SQL 之间，将两个 SQL 的查询结果取或运算;

## SQL 语法原理

SELECT 之后的位要查询显示的属性列名; FROM 后面是要查询的表名;WHERE 后面是要查询条件；涉及到最大值、平均数、求和等运算，必须要分组，group by 后面是分组的属性列名；分组的条件使用 having 关键字，后面跟条件。

